e77e9c5b36ab974c198de8532a6c5fe0f6053d2e,json/src/main/java/org/teavm/flavour/json/emit/JsonSerializerEmitter.java,JsonSerializerEmitter,tryGetPredefinedSerializer,#String#,121
Before Change
private String tryGetPredefinedSerializer(String className) {
String serializer = predefinedSerializers.get(className);
if (serializer == null) {
if (classSource.isSuperType(Enum.class.getName(), className).orElse(false)) {
serializer = EnumSerializer.class.getName();
} else if (classSource.isSuperType(Map.class.getName(), className).orElse(false)) {
serializer = MapSerializer.class.getName();
} else if (classSource.isSuperType(Collection.class.getName(), className).orElse(false)) {
serializer = ListSerializer.class.getName();
}
After Change
private Value<JsonSerializer> tryGetPredefinedSerializer(ReflectClass<?> cls) {
Class<?> serializerType = !cls.isArray() ? predefinedSerializers.get(cls.getName()) : null;
if (serializerType != null) {
ReflectMethod ctor = em.getContext().findClass(serializerType).getDeclaredMethod("<init>");
return em.emit(() -> (JsonSerializer) ctor.construct());
}
if (em.getContext().findClass(Enum.class).isAssignableFrom(cls)) {
return em.emit(() -> new EnumSerializer());
} else if (em.getContext().findClass(Map.class).isAssignableFrom(cls)) {
return em.emit(() -> new MapSerializer());
} else if (em.getContext().findClass(Collection.class).isAssignableFrom(cls)) {
return em.emit(() -> new ListSerializer());
}